<?php

class auth {

    static function montaSessao($auth,$authAdapter) {
        //Armazena os dados do usuário em sessão, apenas desconsiderando
        //a senha do usuário
        $info = $authAdapter->getResultRowObject(null, 'USU_SENHA');
        $storage = $auth->getStorage();
        $storage->write($info);

        $arr_mod_sessao = array();					
        $arr_mod_menu_inicial = array();	

        $menu = new Ead_Model_DbTable_Menu();
        $mod = new Ead_Model_DbTable_Modulos();

        $select = new Zend_Db_Select(Zend_Db_Table::getDefaultAdapter());                   
        $select->from('MENU')->order('MEN_ORD ASC');
        $result = $select->query();
        $res_menu = $result->fetchAll();
        foreach ($res_menu as $key => $men) {
            //echo $men['MEN_NOME']."<br>";
            //$res_mod = $mod->fetchAll('MEN_ID = '.$men['MEN_ID'])->toArray();   
            $obj_prm = new Ead_Model_DbTable_PermissaoHasModulo();
            $row_prm = $obj_prm->fetchAll('PER_ID = '.$info->PER_ID)->toArray();


            $select = new Zend_Db_Select(Zend_Db_Table::getDefaultAdapter());
            $select->from('MODULOS')->where('MEN_ID = '.$men['MEN_ID'].' AND MOD_ATIVO = 1')->order('MOD_NOME ASC');
            $result = $select->query();
            $res_mod = $result->fetchAll();
            $arr_mod = array();
            foreach ($res_mod as $key2 => $md) { 
                //echo ' - '.$md['MOD_NOME']."<br>";
                // TESTA PERMISSAO, para montar os menus
                foreach($row_prm as $r_prm){
                    if($md['MOD_ID'] == $r_prm['MOD_ID'])
                    {
                        // tem modulos
                        if($md['MOD_MENU'] == 1) $arr_mod[$key2] = array('id'=>$md['MOD_ID'], 'nome'=>$md['MOD_NOME'], 'arquivo' => $md['MOD_ARQUIVO'] );

                        $arr_mod_sessao[$md['MOD_ARQUIVO']] = $md['MOD_NOME'];

                        $arr_mod_permissao[$md['MOD_ARQUIVO']] = array('MOD_ID'=>$md['MOD_ID'],'MOD_ADD'=>$r_prm['MOD_ADD'],'MOD_EDT'=>$r_prm['MOD_EDT'],'MOD_DEL'=>$r_prm['MOD_DEL']);

                        if($md['MOD_HOME'] == 1) $arr_mod_menu_inicial[$md['MOD_ID']] = array('MOD_ID'=>$md['MOD_ID'],'MOD_NOME'=>$md['MOD_NOME'],'MOD_ICONE'=>$md['MOD_ICONE'],'MOD_ARQUIVO'=>$md['MOD_ARQUIVO']);

                    }
                }
            }
            // se tem modulos, grava menu com módulos
            if(count($arr_mod) > 0)
                $arr_menu[$key] = array(
                    'nome' => $men['MEN_NOME'],
                    'css'  => $men['MEN_CSS'],
                    'modulos' => array('0'=>array('modulo' => $arr_mod))
                );    
        }

        // criar menu no arquivo xml
        $config = new Zend_Config(array(), true);
        $config->menus = array();
        $config->menus->menu = array($arr_menu);

        $writer = new Zend_Config_Writer_Xml();
        $writer->write('public/xml/menu_'.$storage->read()->USU_ID.'.xml', $config);

        // grava modulos sessão
        $sessao = new Zend_Session_Namespace('Modulos');
        $sessao->modulos = $arr_mod_sessao;
        $sessao->modulos_menu_inicial = $arr_mod_menu_inicial;
        $sessao->modulos_permissao = $arr_mod_permissao;
        
        return true;

    }  
   
}